package com.ft.oa.domain.approval;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ft.oa.utils.SecurityUtils;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import java.time.LocalDateTime;

/**
 * 审批主表
 * @author liyansheng
 * @ClassName ApplyForApproval
 * @date 2022-1-17 15:50:27
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName(value = "apply_for_approval",autoResultMap = true)
public class ApplyForApproval {

    /**
     * 主键id
     */
    @TableId(type = IdType.AUTO)
    private Long id;

    /**
     * 关联表主键
     */
    private Long relationId;

    /**
     * 申请编码
     */
    private String relationCode;

    /**
     * 申请名称
     */
    @TableField(exist = false)
    private String relationName;

    /**
     * 关联审批分类 1、合同审批 2、协同审批 3、投标审批  4、立项审批  5、验收审批
     * 6、成本变更审批  7、进度变更审批  8、研发立项审批  9、采购审批
     */
    private Integer relationType;

    /**
     * 人员id
     */
    private Long userId;

    /**
     * 人员名称
     */
    @TableField(exist = false)
    private String userName;

    /**
     * 人员类型  0-审批人 1-抄送人
     */
    private Integer userType;

    /**
     * 是否是最终审批人 0-否 1-是
     */
    private Integer lastUser;

    /**
     * 排序
     */
    private Integer seq;

    /**
     * 当前审批人节点状态 0-未流转 1-待审批 2-已审批(当前审批人审批过后更新下一审批人状态)
     */
    private Integer currentApprovalStatus;

    /**
     * 当前节点审批结果 0-驳回 1-审批通过
     */
    private Integer approvalResult;

    /**
     * 当前节点审批结果
     */
    @TableField(exist = false)
    private String approvalResultName;

    /**
     * 主表审批状态 审核状态 0-审核中  1-通过  2-驳回  默认审核中
     */
    private Integer approvalStatus=0;

    /**
     * 审批意见
     */
    private String approvalOpinion;

    /**
     * 审批时间
     */
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss")
    private LocalDateTime approvalTime;

    /**
     * 创建人id
     */
    private Long creator = SecurityUtils.getCurrentUser().getId();

    /**
     * 发起人姓名
     */
    @TableField(exist = false)
    private String creatorName;

    /**
     * 创建时间
     */
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime = LocalDateTime.now();

    /**
     * 修改人id
     */
    private Long editor = SecurityUtils.getCurrentUser().getId();

    /**
     * 修改时间
     */
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updateTime = LocalDateTime.now();
    /**
     * 是否回调
     */
    private Boolean callBack;
    /**
     * 回调内容
     */
    private String callBackMsg;

    /**
     * 是否已读 0-未读 1-已读
     */
    private Integer read_status;

}
